/**
 * 从身份证号中获取用户的性别
 * 
 * @param {string} idCard - 身份证号
 * @returns {string} - 返回用户性别，"男-0" 或 "女-1" 
 */
export function getGenderFromIdCard(idCard) {
  // 身份证号码的倒数第二位表示性别，奇数为男性，偶数为女性
  const genderDigit = parseInt(idCard.charAt(idCard.length - 2));
  return genderDigit % 2 === 0 ? "1" : "0";
}

/**
 * 根据出生日期计算用户的年龄
 * 
 * @param {string} birthDateStr - 出生日期字符串（格式：yyyy-mm-dd）
 * @returns {number} - 返回用户年龄
 */
export function calculateAge(birthDateStr) {
  // 将出生日期字符串转换为日期对象
  const birthDate = new Date(birthDateStr);
  // 获取当前日期
  const currentDate = new Date();
  // 计算年龄
  let age = currentDate.getFullYear() - birthDate.getFullYear();
  // 如果当前月份小于出生月份，或者当前月份等于出生月份但当前日期小于出生日期，则年龄减少一岁
  if (
    currentDate.getMonth() < birthDate.getMonth() ||
    (currentDate.getMonth() === birthDate.getMonth() &&
      currentDate.getDate() < birthDate.getDate())
  ) {
    age--;
  }
  return age;
}

/**
 * 从身份证号码中提取出生日期
 * @param {string} idNumber - 身份证号码
 * @returns {string} 出生日期（格式为 YYYY-MM-DD），如果身份证号码无效，则返回 '无效身份证号码'
 */
export function getBirthDateFromId(idNumber) {
  // 检查身份证号码的长度是否为 18 位
  if (idNumber.length !== 18) {
    return '无效身份证号码';
  }

  // 提取出生日期部分（第 7 到第 14 位）
  const birthDate = idNumber.slice(6, 14);

  // 验证提取出的出生日期是否符合 YYYYMMDD 格式
  const year = birthDate.slice(0, 4);
  const month = birthDate.slice(4, 6);
  const day = birthDate.slice(6, 8);

  // 简单验证日期的有效性
  if (
    isNaN(year) || isNaN(month) || isNaN(day) ||
    month < 1 || month > 12 ||
    day < 1 || day > 31
  ) {
    return '无效身份证号码';
  }

  // 格式化日期为 YYYY-MM-DD
  return `${year}-${month}-${day}`;
}